package com.lill.system.model;

import java.io.Serializable;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

/**
 * 消息模板实体
 * 表名 sys_msg_model_info
 *
 * @author lill
 * @date 2020-04-09 18:08:25
 */
public class SysMsgModelInfoEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private String id;
    /**
     * 编码
     */
    private String code;
    /**
     * 类型
     */
    private String type;
    private String typeName;
    /**
     * 名称
     */
    private String name;
    /**
     * 描述
     */
    private String content;
    /**
     * android跳转链接
     */
    private String androidUrl;
    /**
     * ios跳转链接
     */
    private String iosUrl;
    /**
     * 消息内容
     */
    private String msg;
    /**
     * 图标
     */
    private String icon;
    /**
     * 状态  -1：删除   0：冻结   1：有效
     */
    private Integer status;
    /**
     * 创建者ID
     */
    private String createUser;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 更新者ID
     */
    private String updateUser;
    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 设置：主键
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取：主键
     */
    public String getId() {
        return id;
    }
    /**
     * 设置：编码
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * 获取：编码
     */
    public String getCode() {
        return code;
    }
    /**
     * 设置：类型
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * 获取：类型
     */
    public String getType() {
        return type;
    }
    /**
     * 设置：名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取：名称
     */
    public String getName() {
        return name;
    }
    /**
     * 设置：描述
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 获取：描述
     */
    public String getContent() {
        return content;
    }
    /**
     * 设置：android跳转链接
     */
    public void setAndroidUrl(String androidUrl) {
        this.androidUrl = androidUrl;
    }

    /**
     * 获取：android跳转链接
     */
    public String getAndroidUrl() {
        return androidUrl;
    }
    /**
     * 设置：ios跳转链接
     */
    public void setIosUrl(String iosUrl) {
        this.iosUrl = iosUrl;
    }

    /**
     * 获取：ios跳转链接
     */
    public String getIosUrl() {
        return iosUrl;
    }
    /**
     * 设置：消息内容
     */
    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * 获取：消息内容
     */
    public String getMsg() {
        return msg;
    }
    /**
     * 设置：图标
     */
    public void setIcon(String icon) {
        this.icon = icon;
    }

    /**
     * 获取：图标
     */
    public String getIcon() {
        return icon;
    }
    /**
     * 设置：状态  -1：删除   0：冻结   1：有效
     */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /**
     * 获取：状态  -1：删除   0：冻结   1：有效
     */
    public Integer getStatus() {
        return status;
    }
    /**
     * 设置：创建者ID
     */
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    /**
     * 获取：创建者ID
     */
    public String getCreateUser() {
        return createUser;
    }
    /**
     * 设置：创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取：创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }
    /**
     * 设置：更新者ID
     */
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }

    /**
     * 获取：更新者ID
     */
    public String getUpdateUser() {
        return updateUser;
    }
    /**
     * 设置：更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取：更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }
    
    public String msgDetail(String... strArray){
		String content=msg;
		String regex = "\\{(.*?)\\}";
		if(null!=strArray&&strArray.length>0){
			for (int i = 0; i < strArray.length; i++) {
				String val=strArray[i];
				if(null==val){
					val="";
				}
				content=content.replaceFirst(regex, val);
			}
		}
		return content;
	}
    
	public String msgDetailMap(Map<String, String> msgParamMap) {
		return getRealContent(msgParamMap, msg);
	}

	public String titleDetail(List<String> argList){
		String titleContent=name;
		String regex = "\\{(.*?)\\}";
		if(null!=argList&&argList.size()>0){
			for (int i = 0; i < argList.size(); i++) {
				String val=argList.get(i);
				if(null==val){
					val="";
				}
				titleContent=titleContent.replaceFirst(regex, val);
			}
		}
		return titleContent;
	}
	
	public String titleDetailMap(Map<String, String> titleMap) {
		return getRealContent(titleMap, name);
	}
	
	public String androidPath(List<String> argList){
		String androidContent=androidUrl;
		String regex = "\\{(.*?)\\}";
		if(null!=argList&&argList.size()>0){
			for (int i = 0; i < argList.size(); i++) {
				String val=argList.get(i);
				if(null==val){
					val="";
				}
				androidContent=androidContent.replaceFirst(regex, val);
			}
		}
		return androidContent;
	}
	
	public String androidPathMap(Map<String, String> androidParamMap) {
		return getRealContent(androidParamMap, androidUrl);
	}
	
	public String iosPath(List<String> argList){
		String iosContent=iosUrl;
		String regex = "\\{(.*?)\\}";
		if(null!=argList&&argList.size()>0){
			for (int i = 0; i < argList.size(); i++) {
				String val=argList.get(i);
				if(null==val){
					val="";
				}
				iosContent=iosContent.replaceFirst(regex, val);
			}
		}
		return iosContent;
	}
	
	public String iosPathMap(Map<String, String> iosParamMap) {
		return getRealContent(iosParamMap, iosUrl);
	}

	public String getTypeName() {
		return typeName;
	}

	public void setTypeName(String typeName) {
		this.typeName = typeName;
	}

	private String getRealContent(Map<String, String> paramMap, String content) {
		if(null!=paramMap&&!paramMap.isEmpty()&&StringUtils.isNotEmpty(content)){
			Iterator<String> iteKey=paramMap.keySet().iterator();
			String key="";
			while (iteKey.hasNext()) {
				key = iteKey.next();
				if(StringUtils.isNotEmpty(paramMap.get(key))){
					content=content.replace(key, paramMap.get(key));
				}else{
					content=content.replace(key, "  ");
				}
			}
		}
		return content;
	}
	
}
